package com.pharmcube.xjy.swagger;

import java.lang.annotation.*;

/**
 * 通过本注解，描述某个对象字段的结构. 可通过国其他注解的ref字段（如{@link ApiResponseObject#ref}、{@link ApiResponseProperty#ref}）
 * 引用该注解描述的结构
 *
 * @author WuDi
 * @version 1.0
 * @date 2021/5/10
 */
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
@Repeatable(ApiResponsePropertyRefs.class)
public @interface ApiResponsePropertyRef {
    /**
     * 属性类型名，{@link ApiResponseObject#ref()}通过本字段链接{@link #properties}字段描述的结构
     */
    String value();

    String description() default "";

    /**
     * 用于描述该对象中的每一个字段的信息，可以通过{@link ApiResponseProperty#ref}字段定义子对象的结构。
     * NOTICE: swagger-ui支持递归定义，但是页面上不会递归显示（所以诸如链表结构，只能显示第一个节点的结构）
     */
    ApiResponseProperty[] properties();
}
